CC = gcc
CFLAGS = -Wall -g
INC_DIR = include
SRC_DIR = src
OBJ_DIR = lib
LIB_NAME = libcal.a
EXEC_NAME = main
SRCS = $(wildcard $(SRC_DIR)/*.c)
OBJS = $(patsubst $(SRC_DIR)/%.c,$(OBJ_DIR)/%.o,$(SRCS))
.PHONY: all
all: $(OBJ_DIR)/$(LIB_NAME) $(EXEC_NAME)
$(OBJ_DIR)/%.o: $(SRC_DIR)/%.c
	@mkdir -p $(OBJ_DIR)
	$(CC) $(CFLAGS) -I$(INC_DIR) -c $< -o $@
$(OBJ_DIR)/$(LIB_NAME): $(OBJS)
	ar rcs $@ $^
$(EXEC_NAME): $(OBJ_DIR)/$(LIB_NAME) $(wildcard *.c)
	$(CC) $(CFLAGS) -I$(INC_DIR) -o $@ $^ -L$(OBJ_DIR) -lcal
.PHONY: clean
clean:
	rm -f $(OBJS) $(OBJ_DIR)/$(LIB_NAME) $(EXEC_NAME)
